home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d1 / eddtv4.arc / CMOSWRIT.ASM < prev    next >
Assembly Source File  |  1988-03-28  |  4KB  |  97 lines

  1.          .XLIST
  2.          .286                     ; ENABLE 80286 OP CODES
  3.          PAGE  80,120
  4.          PAGE
  5.          TITLE èÄ CMOSWRIT - CONFIGURATION MEMORY (CMOS) WRITEö
  6.          .LIST
  7.          SUBTTL ROUTINE TO WRTIE CONFIGURATION (CMOS) MEMORY
  8.          COMMENT *
  9.  
  10.          CMOSWRIT - VERSION 1.00
  11.  
  12.          Copyright 1987,1988 Don Gentry
  13.  
  14.          A limited license is granted to all users of this program,
  15.          to make copies of this program, and distribute them to
  16.          other users, on the following conditions:
  17.  
  18.          1. The notice on this page is not to be removed or altered
  19.  
  20.          2. No fee is to be charged for copying or distributing
  21.             the program.
  22.  
  23.          3. No warranty of any kind is offered. This program is offered
  24.             on an "AS IS" basis. Each user should verify that it meets
  25.             his needs and verify correct operation.
  26.  
  27.          4. No further restrictions on redristribution of any kind may
  28.             be required. This includes, but is not limited to,
  29.             COMPUSERVE or other program distribution services,
  30.             by electronic or other means.
  31.  
  32.          FOR HELP OR SUGGESTIONS WRITE:
  33.  
  34.          DON GENTRY
  35.          183 BELLEGROVE CIRCLE
  36.          BRANDON, MS  39042
  37.  
  38.          OR CALL (601) 992-0577
  39.                                                                 *
  40.          PAGE
  41. ;-----------------------------------------------------------------------
  42. ;
  43. ;        PROCEDURE CMOSWRIT
  44. ;
  45. ;        PURPOSE:
  46. ;              WRITE TO CONFIGURATION (CMOS) MEMORY
  47. ;
  48. ;        PARAMETERS:
  49. ;              DS:DX - POINTER TO A 32 BYTE AREA TO CONTAINING
  50. ;                      THE DATA FOR CMOS MEMORY BYTES
  51. ;                      10 - 2F
  52. ;
  53. ;        OUTPUT:
  54. ;              THE 32 BYTE AREA POINTED TO BY DS:DX CONTAINING
  55. ;              A COPY OF CMOS DATA BYTES 10 - 2F IS TRANSFERED
  56. ;              TO THE CMOS MEMORY
  57. ;
  58. ;-----------------------------------------------------------------------
  59.          PUBLIC CMOSWRIT          ; TELL THE LINKER ABOUT US
  60. ;
  61. ; -----  EQUATES FOR EASE OF CODING
  62. ;
  63. CM_ADDR  EQU   070H               ; CMOS ADDRESSING PORT
  64. CM_IO    EQU   071H               ; CMOS I/O PORT
  65. ;
  66. CMR_CODE SEGMENT PUBLIC 'CODE'    ; IDENTIFY THE CODE SEGMENT
  67.          ASSUME CS:CMR_CODE       ; INFORM THE ASSEMBLER
  68. CMOSWRIT PROC  FAR                ; IDENTIFY THE PROCEDURE
  69.          JMP   CMR_GO             ; JUMP OVER MODULE ID
  70.          DB    8                  ; LENGTH OF ID
  71.          DB    'CMOSWRIT'         ; MODULE EYE-CATCHER
  72.          DB    'V1M0'             ; VERSION & MOD LEVEL
  73.          DB    'Copyright 1987,1988 Don Gentry'
  74. CMR_GO:                           ; BEGIN ACTUAL LOGIC
  75.          PUSHA                    ; SAVE REGISTERS
  76.          MOV   BX,DX              ; GET SENDING FIELD ADDRESS
  77.          MOV   CX,02FH            ; GET ENDING BYTE OF CMOS
  78. CMR_LOOP:                         ; LOOP FOR CMOS DATA
  79.          MOV   AL,CL              ; GET FIRST BYTE TO RETRIEVE
  80.          OUT   CM_ADDR,AL         ; SEND ADDRESS TO PORT
  81.          MOV   SI,CX              ; GET RELATIVE BYTE IN SI
  82.          SUB   SI,010H            ; ADJUST FOR NOT RETRIEVED
  83.          MOV   AL,DS:[BX+SI]      ; GET THE BYTE FOR CMOS
  84.          OUT   CM_IO,AL           ; SEND IT TO CMOS
  85.          CMP   CX,010H            ; DONE THEM ALL ?
  86.          JE    CMR_EXIT           ; ...YES - EXIT THE LOOP
  87.          LOOP  CMR_LOOP           ; LOOP 'TIL DONE
  88. CMR_EXIT:                         ; EXIT HERE WHEN DONE
  89.          POPA                     ; RESTORE REGISTERS
  90. ;
  91. ; -----  RETURN TO CALLER
  92. ;
  93.          RET                      ; RETURN
  94. CMOSWRIT ENDP                     ; END OF PROCEDURE
  95. CMR_CODE ENDS                     ; END OF SEGMENT
  96.          END
  97.